<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>areaDetector Plugin NDPluginColorConvert</title>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
</head>
<body>
  <div style="text-align: center">
    <h1>
      areaDetector Plugin NDPluginColorConvert</h1>
    <h2>
      October 1, 2012</h2>
    <h2>
      Mark Rivers</h2>
    <h2>
      University of Chicago</h2>
  </div>
  <h2>
    Contents</h2>
  <ul>
    <li><a href="#Overview">Overview</a></li>
    <li><a href="#Configuration">Configuration</a></li>
    <li><a href="#Screens">Screen shots</a></li>
    <li><a href="#Restrictions">Restrictions</a></li>
  </ul>
  <h2 id="Overview">
    Overview
  </h2>
  <p>
    NDPluginColorConvert is a tool for converting the color mode of NDArray data. It
    receives an input NDArray with one color mode and outputs another NDArray with a
    (potentially) different color mode. All other attributes of the array are preserved.</p>
  <p>
    NDPluginColorConvert inherits from NDPluginDriver. The <a href="areaDetectorDoxygenHTML/class_n_d_plugin_color_convert.html">
      NDPluginColorConvert class documentation</a> describes this class in detail.
  </p>
  <p>
    NDPluginColorConvert defines the following parameters. It also implements all of
    the standard plugin parameters from <a href="pluginDoc.html#NDPluginDriver">NDPluginDriver</a>
    . The EPICS database NDColorConvert.template provides access to these parameters,
    listed in the following table.
  </p>
  <table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
    <tbody>
      <tr>
        <td align="center" colspan="7,">
          <b>Parameter Definitions in NDPluginColorConvert.h and EPICS Record Definitions in
            NDColorConvert.template</b></td>
      </tr>
      <tr>
        <th>
          Parameter index variable</th>
        <th>
          asyn interface</th>
        <th>
          Access</th>
        <th>
          Description</th>
        <th>
          drvInfo string</th>
        <th>
          EPICS record name</th>
        <th>
          EPICS record type</th>
      </tr>
      <tr>
        <td>
          NDPluginColorConvertColorModeOut</td>
        <td>
          asynInt32</td>
        <td>
          r/w</td>
        <td>
          The output color mode (NDColorMode_t).</td>
        <td>
          COLOR_MODE_OUT</td>
        <td>
          $(P)$(R)ColorModeOut
          <br />
          $(P)$(R)ColorModeOut_RBV </td>
        <td>
          mbbo
          <br />
          mbbi</td>
      </tr>
      <tr>
        <td>
          NDPluginColorConvertFalseColor</td>
        <td>
          asynInt32</td>
        <td>
          r/w</td>
        <td>
          The false color map index. There are currently 2 false color maps defined, Rainbow
          and Iron. Additional color maps can easily be added in the future.</td>
        <td>
          FALSE_COLOR</td>
        <td>
          $(P)$(R)FalseColor
          <br />
          $(P)$(R)FalseColor_RBV </td>
        <td>
          mbbo
          <br />
          mbbi</td>
      </tr>
    </tbody>
  </table>
  <p>
    NDPluginColorConvert currently supports the following conversions:</p>
  <ul>
    <li>Mono to RGB1, RGB2, or RGB3</li>
    <li>Bayer to RGB1, RGB2, or RGB3 (Linux and WIN32 only)</li>
    <li>RGB1 to mono, RGB2 or RGB3</li>
    <li>RGB2 to mono, RGB1 or RGB3</li>
    <li>RGB3 to mono, RGB1 or RGB2</li>
  </ul>
  <p>
    When converting from 8-bit mono to RGB1, RGB2 or RGB3 a false-color map will be
    applied if FalseColor is not zero.</p>
  <p>
    The Bayer color conversion supports the 4 Bayer formats (NDBayerRGGB, NDBayerGBRG,
    NDBayerGRBG, NDBayerBGGR) defined in NDArray.h. If the input color mode and output
    color mode are not one of these supported conversion combinations then the output
    array is simply a copy of the input array and no conversion is performed.</p>
  <h2 id="Configuration">
    Configuration</h2>
  <p>
    The NDPluginColorConvert plugin is created with the following command, either from
    C/C++ or from the EPICS IOC shell.
  </p>
  <pre> int NDColorConvertConfigure(const char *portName, int queueSize, int blockingCallbacks, 
                             const char *NDArrayPort, int NDArrayAddr, 
                             int maxBuffers, size_t maxMemory,
                             int priority, int stackSize)
  </pre>
  <p>
    For details on the meaning of the parameters to this function refer to the detailed
    documentation on the NDColorConvertConfigure function in the <a href="areaDetectorDoxygenHTML/_n_d_plugin_color_convert_8cpp.html">
      NDPluginColorConvert.cpp documentation</a> and in the documentation for the constructor
    for the <a href="areaDetectorDoxygenHTML/class_n_d_plugin_color_convert.html">NDPluginColorConvert
      class</a>.
  </p>
  <h2 id="Screens">
    Screen shots</h2>
  <p>
    The following is the MEDM screen that provides access to the parameters in NDPluginDriver.h
    and NDPluginColorConvert.h through records in NDPluginBase.template and NDColorConvert.template.
  </p>
  <div style="text-align: center">
    <h3>
      NDColorConvert.adl</h3>
    <p>
      <img alt="NDColorConvert.png" src="NDColorConvert.png" /></p>
  </div>
  <h2 id="Restrictions">
    Restrictions</h2>
  <ul>
    <li>The Bayer color conversion is done using a library function provided in the Prosilica
      library. The source code for this function is not provided, and the binaries are
      only available on Linux and Windows. All other conversions are supported on all
      platforms.</li>
    <li>YUV color conversion is not supported. This may be added in a future release.</li>
  </ul>
</body>
</html>
